﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ERP.Domain.Entities
{
    /// <summary>
    /// 单据主表
    /// </summary>
    public class Receipt
    {
        [Key]
        public int ReceiptId { get; set; }
        /// <summary>
        /// 单据的类型（出库/入库）。
        /// </summary>
        public string ReceiptType { get; set; }

        /// <summary>
        /// 出入库的分类。
        /// </summary>
        public string SubType { get; set; }

        /// <summary>
        /// 初始票据号。
        /// </summary>
        public string DefaultNumber { get; set; }

        /// <summary>
        /// 票据号。
        /// </summary>
        public string Number { get; set; }

        /// <summary>
        /// 创建时间。
        /// </summary>
        public DateTime CreateTime { get; set; }

        /// <summary>
        /// 出入库时间。
        /// </summary>
        public DateTime OperTime { get; set; }

        /// <summary>
        /// 供应商 ID。
        /// </summary>
        public long OrganId { get; set; }

        /// <summary>
        /// 采购/领料经手人 ID。
        /// </summary>
        public long HandsPersonId { get; set; }

        /// <summary>
        /// 操作员。
        /// </summary>
        public long Creator { get; set; }

        /// <summary>
        /// 账户 ID。
        /// </summary>
        public long AccountId { get; set; }

        /// <summary>
        /// 变动金额（收款/付款）。
        /// </summary>
        public decimal ChangeAmount { get; set; }

        /// <summary>
        /// 合计金额。
        /// </summary>
        public decimal TotalPrice { get; set; }

        /// <summary>
        /// 付款类型（现金、记账等）。
        /// </summary>
        public string PayType { get; set; }

        /// <summary>
        /// 单据类型。
        /// </summary>
        public string BillType { get; set; }

        /// <summary>
        /// 备注。
        /// </summary>
        public string Remark { get; set; }

        /// <summary>
        /// 附件名称。
        /// </summary>
        public string FileName { get; set; }

        /// <summary>
        /// 业务员（可以多个）。
        /// </summary>
        public string SalesMan { get; set; }

        /// <summary>
        /// 多账户 ID 列表。
        /// </summary>
        public string AccountIdList { get; set; }

        /// <summary>
        /// 多账户金额列表。
        /// </summary>
        public string AccountMoneyList { get; set; }

        /// <summary>
        /// 优惠率。
        /// </summary>
        public decimal Discount { get; set; }

        /// <summary>
        /// 优惠金额。
        /// </summary>
        public decimal DiscountMoney { get; set; }

        /// <summary>
        /// 优惠后金额。
        /// </summary>
        public decimal DiscountLastMoney { get; set; }

        /// <summary>
        /// 销售或采购费用合计。
        /// </summary>
        public decimal OtherMoney { get; set; }

        /// <summary>
        /// 销售或采购费用涉及项目 ID 数组（包括快递、招待等）。
        /// </summary>
        public string OtherMoneyList { get; set; }

        /// <summary>
        /// 销售或采购费用涉及项目（包括快递、招待等）。
        /// </summary>
        public string OtherMoneyItem { get; set; }

        /// <summary>
        /// 结算天数。
        /// </summary>
        public int AccountDay { get; set; }

        /// <summary>
        /// 单据状态（未审核、已审核）。
        /// </summary>
        public bool Status { get; set; }

        /// <summary>
        /// 关联订单号。
        /// </summary>
        public string LinkNumber { get; set; }

        /// <summary>
        /// 租户 ID。
        /// </summary>
        public long TenantId { get; set; }

        /// <summary>
        /// 删除标记，0 未删除，1 删除，默认 0。
        /// </summary>
        public string DeleteFlag { get; set; }
    }
}
